﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SIGERP_Entidades;
using SIGERP_Negocio;

namespace SIGERP_Presentacion
{
    public partial class frmUsuario : frmABM
    {
        List<Usuario> usuarios;
        DataTable dt;
        DataGridViewButtonColumn btnCambioPass;

        public frmUsuario()
        {
            base.escribeLabels("Usuario");
            base.CargarGrilla();
            base.txtBusqueda.Focus();
        }

        public override void CargarGrilla()
        {
            base.Grilla.Columns.Clear();
            dt = new DataTable();
            dt.Columns.Add("Id", typeof(int));
            dt.Columns.Add("Usuario", typeof(string));
            dt.Columns.Add("Tipo de Usuario", typeof(string));
            dt.Columns.Add("Apellido", typeof(string));
            dt.Columns.Add("Nombre", typeof(string));
            dt.Columns.Add("Email", typeof(string));
            dt.Columns.Add("Habilitado", typeof(bool));
            dt.Columns.Add("Departamentos", typeof(string));
            usuarios = Usuarios.buscarUsuarios();

            foreach (Usuario u in usuarios)
                dt.Rows.Add(u.id,u,u.tipo,u.apellido,u.nombre, u.email, u.habilitado, u.mostrarDepartamentos());

            base.Grilla.DataSource = dt;
            base.Grilla.Columns[0].Visible = false;
            btnCambioPass = new DataGridViewButtonColumn();
            base.Grilla.Columns.Add(btnCambioPass);
            btnCambioPass.HeaderText = "Contraseña";
            btnCambioPass.Text = "Cambiar Contraseña";
            btnCambioPass.Name = "btn";
            btnCambioPass.UseColumnTextForButtonValue = true;
            btnCambioPass.DisplayIndex = 2;
            Grilla.Columns[7].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;            
        }

        public override void busqueda()
        {
            dt.Clear();

            foreach (Usuario u in usuarios)
            {

                if (u.descripcion.ToUpper().StartsWith(base.txtBusqueda.Text.ToUpper()))
                    dt.Rows.Add(u.id, u,u.tipo, u.apellido, u.nombre, u.email, u.habilitado, u.mostrarDepartamentos());
            }

            //SINO ENCUENTRA RESULTADOS MUESTRO LA LEYENDA PARA INGRESAR NUEVO

            if (dt.Rows.Count == 0) base.lblNoSeEncontro.Text = "Ingresar nuevo usuario";
            else base.lblNoSeEncontro.Text = "";
        }

        public override void agregar()
        {
            frmUsuarioAgregar frm = new frmUsuarioAgregar();
            frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
            if (frm.ShowDialog() == DialogResult.OK) CargarGrilla();
            frm.Dispose();
            CargarGrilla();
            busqueda();
        }

        public override void eliminar()
        {
            if (base.Grilla.SelectedRows.Count == 1)
            {
                if (MessageBox.Show("¿Desea dar de baja el usuario seleccionado?", Text, MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                {
                    Usuario u = Usuarios.buscarUsuario(Convert.ToInt32(base.Grilla.SelectedRows[0].Cells["Id"].Value));
                    
                    if (Usuarios.verificarSiHayReclamosAsociados(u))
                    {
                        if (u.habilitado)
                        {
                            if (MessageBox.Show("El usuario seleccionado tiene reclamos asociados, no puede ser eliminado, ¿Desea deshabilitarlo?", Text, MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                            {
                                Usuarios.deshabilitaUsuario(u);
                                CargarGrilla();
                            }
                        }
                        else
                        {
                            MessageBox.Show("El usuario no puede ser eliminado, existen reclamos asociados", Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
                        }
                        return;
                    }

                    if (Usuarios.verificarSiHayIntervencionesAsociadas(u))
                    {
                        if (u.habilitado)
                        {
                            if (MessageBox.Show("El usuario seleccionado tiene intervenciones asociadas, no puede ser eliminado, ¿Desea deshabilitarlo?", Text, MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                            {
                                Usuarios.deshabilitaUsuario(u);
                                CargarGrilla();
                            }
                        }
                        else
                        {
                            MessageBox.Show("El usuario no puede ser eliminado, existen intervenciones asociadas", Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
                        }
                        return;
                    }

                    Usuarios.borrar(u);
                    CargarGrilla();
                    busqueda();
                }
            }
        }

        public override void clickEnCelda(DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == btnCambioPass.Index && e.RowIndex == base.Grilla.SelectedRows[0].Index)
            {
                Usuario u = Usuarios.buscarUsuario(Convert.ToInt32(base.Grilla.SelectedRows[0].Cells["Id"].Value));
                frmCambioPass frm = new frmCambioPass(u);
                frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
                frm.ShowDialog();
            }
        }

        public override void editar(int row,int column)
        {
            if (column != btnCambioPass.Index && row == base.Grilla.SelectedRows[0].Index)
            {
                    Usuario u = Usuarios.buscarUsuario(Convert.ToInt32(base.Grilla.SelectedRows[0].Cells["Id"].Value));
                    if (u != null)
                    {
                        frmUsuarioActualizar frm = new frmUsuarioActualizar(u);
                        frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
                        frm.ShowDialog();
                        frm.Dispose();
                    }
                    CargarGrilla();
                    busqueda();
            }
        }

        public override void enterEnTextBox()
        {
            if (dt.Rows.Count == 0) { 
                frmUsuarioAgregar frm= new frmUsuarioAgregar(txtBusqueda.Text.ToUpper());
                frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
                if(frm.ShowDialog()==DialogResult.OK)
                CargarGrilla();
                busqueda();
            }
        }

        private void InitializeComponent()
        {
            this.HelpProviderHG = new System.Windows.Forms.HelpProvider();
            this.SuspendLayout();
            // 
            // HelpProviderHG
            // 
            this.HelpProviderHG.HelpNamespace = "/SIGERP_AYUDA.chm";
            // 
            // frmUsuario
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.ClientSize = new System.Drawing.Size(592, 416);
            this.HelpProviderHG.SetHelpKeyword(this, "frmUsuario_1.htm");
            this.HelpProviderHG.SetHelpNavigator(this, System.Windows.Forms.HelpNavigator.Topic);
            this.Name = "frmUsuario";
            this.HelpProviderHG.SetShowHelp(this, true);
            this.ResumeLayout(false);
            this.PerformLayout();

        }

    }
}
